home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 12 / CU Amiga Magazine's Super CD-ROM 12 (1997)(EMAP Images)(GB)[!][issue 1997-07].iso / CUCD / Games / DestructivePoker / sources / sources.lha / handpile.h < prev    next >
C/C++ Source or Header  |  1997-02-13  |  2KB  |  88 lines

  1. /*
  2.         handpile.h (Käsipakan määrittely)
  3.  
  4.         V1.00 - 151096  Kimmo Teräväinen
  5.         -----   ------  ----------------
  6.         V0.01   151096  Aloitettu
  7.         V0.05   161096  Arvio() tehty ja testattu
  8.         V0.10   201096  cIMGKorttia ei enää peritä cKortista
  9.                         cIMGKortti voidaan kääntää (ylösalaisin)
  10.                         cKasiPakka periytyy caKuviosta
  11.         V0.11   201096  cIMGKortti siirretty tiedostoon kortti.h
  12.         V0.12   231096  cKasiPakka periytyy caPakasta
  13.         V0.13   031196  cKasiPakka -> cHandPile
  14.  
  15.  
  16. */
  17. #ifndef DC1_POKER_HANDPILE
  18. #define DC1_POKER_HANDPILE
  19.  
  20. #include "cardpile.h"
  21.  
  22.  
  23. // Evaluation defines
  24. //
  25. //
  26. const int LOUSY_HAND    = 0;
  27. const int PAIR          = 1;
  28. const int TWO_PAIRS     = 2;
  29. const int THREE_OF_KIND = 3;
  30. const int STRAIGHT      = 4;
  31. const int FLUSH         = 5;
  32. const int FULL_HOUSE    = 6;
  33. const int FOUR_OF_KIND  = 7;
  34. const int FIVE_OF_KIND  = 8;
  35. const int STRAIGHT_FLUSH= 9;
  36. const int ROYAL_FLUSH   = 10;
  37.  
  38.  
  39. const int CARD_SLOT_WIDTH = CARD_WIDTH+10;
  40.  
  41. // Flags for cHandPile
  42. //
  43. const int FLAG_5_KIND    = 0x0100; // 0=if 5 of kind < straight flush
  44. const int FLAG_5_JOKERS  = 0x0200; // 0=5 jokers is lousy hand
  45.  
  46.  
  47. class cHandPile : public cCardPile {
  48.   int prefs;
  49. public:
  50.   cHandPile(int x=100,int y=100,int pjoker=0, int p5kind=0) : cCardPile(5,x,y)
  51.   {
  52.     if(pjoker) prefs|=FLAG_5_JOKERS;
  53.     if(p5kind) prefs|=FLAG_5_KIND;
  54.     cards[0]=cards[1]=cards[2]=cards[3]=cards[4]=NULL;
  55.   }
  56.  
  57.   void TurnAll();
  58.   void Turn(int card) { if(cards[card]) cards[card]->Turn(); }
  59.  
  60.   void FreezeAll();
  61.  
  62.   virtual cIMGCard *Deal();
  63.   virtual cIMGCard *Remove(int);
  64.  
  65.   virtual void Insert(cIMGCard *);
  66.   virtual void Insert(cCardPile &) {};
  67.  
  68.   virtual int Can_Insert() const;
  69.   virtual int Can_Insert(cIMGCard *) const { return Can_Insert(); }
  70.  
  71.   int SetPrefs_5jokers(int r=FALSE) {
  72.     if(r) prefs|=FLAG_5_JOKERS;
  73.     else  prefs&=(0xffff-FLAG_5_JOKERS);
  74.     return GetPrefs_5jokers();
  75.   }
  76.   int SetPrefs_5ofkind(int r=FALSE) {
  77.     if(r) prefs|=FLAG_5_KIND;
  78.     else  prefs&=(0xffff-FLAG_5_KIND);
  79.     return GetPrefs_5ofkind();
  80.   }
  81.  
  82.   int GetPrefs_5jokers() const { return prefs & FLAG_5_JOKERS; }
  83.   int GetPrefs_5ofkind() const { return prefs & FLAG_5_KIND;   }
  84.   int Evaluate() const;
  85. };
  86.  
  87. #endif
  88.